home *** CD-ROM | disk | FTP | other *** search
/ Aminet 30 / Aminet 30 (1999)(Schatztruhe)[!][Apr 1999].iso / Aminet / misc / math / MathFX_src.lha / fxwind.c < prev    next >
C/C++ Source or Header  |  1995-12-20  |  2KB  |  55 lines

  1. #include "mathfx.h"
  2.  
  3. void fxwind(xmin,xmax,ymin,ymax)
  4. float xmin, xmax, ymin, ymax;
  5. {
  6.     int vppxmi, vppxma, vppymi, vppyma;
  7.     float dx, dy;
  8.     float vpwxmi, vpwxma, vpwymi, vpwyma;
  9.     float vpxmi, vpxma, vpymi, vpyma;
  10.     float wpxscl, wpxoff, wpyscl, wpyoff;
  11.     float wmxscl, wmxoff, wmyscl, wmyoff;
  12.  
  13.     int level;
  14.  
  15.     glev(&level);
  16.     if (level<2) fatal("Please set up viewport before calling FXWIND.");
  17.  
  18.     gvpp(&vppxmi,&vppxma,&vppymi,&vppyma);
  19.     gvpd(&vpxmi,&vpxma,&vpymi,&vpyma);
  20.  
  21.     dx = (xmax-xmin) * 1.0e-5;
  22.     dy = (ymax-ymin) * 1.0e-5;
  23.  
  24.     if ((xmin == xmax) || (ymin == ymax))
  25.         fatal("Invalid window limits in PLWIND.");
  26.    
  27. /* The true fxot window is made slightly larger than requested so that */
  28. /* the end limits will be on the graph  */
  29.  
  30.     svpw(xmin-dx,xmax+dx,ymin-dy,ymax+dy);
  31.     gvpw(&vpwxmi,&vpwxma,&vpwymi,&vpwyma);
  32.  
  33. /* Compute the scaling between coordinate systems */
  34.  
  35.     dx = vpwxma - vpwxmi;
  36.     dy = vpwyma - vpwymi;
  37.  
  38.     wpxscl  = (vppxma - vppxmi) / dx;
  39.     wpxoff  = (xmax * vppxmi - xmin * vppxma) / dx;
  40.     wpyscl  = (vppyma - vppymi) / dy;
  41.     wpyoff  = (ymax * vppymi - ymin * vppyma) / dy;
  42.     swp(wpxscl,wpxoff,wpyscl,wpyoff);
  43.  
  44.     vpxmi = dcmmx(vpxmi);
  45.     vpxma = dcmmx(vpxma);
  46.     vpymi = dcmmy(vpymi);
  47.     vpyma = dcmmy(vpyma);
  48.     wmxscl = (vpxma - vpxmi) / dx;
  49.     wmxoff = (xmax * vpxmi - xmin * vpxma) / dx;
  50.     wmyscl = (vpyma - vpymi) / dy;
  51.     wmyoff = (ymax * vpymi - ymin * vpyma) / dy;
  52.     swm(wmxscl,wmxoff,wmyscl,wmyoff);
  53.  
  54.     slev(3);
  55. }